#ifndef __A_STAR_H__
#define __A_STAR_H__

#include <queue>
#include <unordered_map>
#include <vector>
#include <algorithm>  // for std::reverse
#include "../global_planner_base.h"


class AstarPlanner : public GlobalPlannerBase{
    public:
        AstarPlanner();

        /********************
         *  虚函数实现
         ********************/
        // 设置调试模式
        void SetDebugMode(bool debug);
        // 更新缓存数据
        void UpdateCache();
        // 开始规划路径
        bool GeneratePath(Pose2D start, Pose2D goal, vector<Pose2D>& points, vector<Pixel2D>& expend_points);

    private:
        vector<std::shared_ptr<GP>> __neighbor_points;
        bool __debug;
};


#endif